/*
 * WheelEvent.h
 *
 *  Created on: 2010-9-13
 *      Author: wenjian
 */

#ifndef WHEELEVENT_H_
#define WHEELEVENT_H_

#include "MouseEvent.h"

namespace Ed {

  class WheelEvent: public MouseEvent {
    public:
      WheelEvent(int x, int y, int delta, MouseButton button, Orientation orient=Vertical, void* source=NULL);
      WheelEvent(int x, int y, int delta, unsigned int buttons, Orientation orient=Vertical, void* source=NULL);
      WheelEvent(int delta, Orientation orient=Vertical, void* source=NULL);

      WheelEvent(int x, int y, int delta, MouseButton button, int key, Orientation orient=Vertical, void* source=NULL);
      WheelEvent(int x, int y, int delta, unsigned int buttons, int key, Orientation orient=Vertical, void* source=NULL);
      WheelEvent(int delta, int key, Orientation orient=Vertical, void* source=NULL);

      WheelEvent(int x, int y, int delta, MouseButton button, const KeySequence& ks, Orientation orient=Vertical, void* source=NULL);
      WheelEvent(int x, int y, int delta, unsigned int buttons, const KeySequence& ks, Orientation orient=Vertical, void* source=NULL);
      WheelEvent(int delta, const KeySequence& ks, Orientation orient=Vertical, void* source=NULL);

      WheelEvent(const MouseEvent& me);
      WheelEvent(const WheelEvent& we);
      WheelEvent(const WheelEvent* we);

      virtual ~WheelEvent();

      inline int getDelta() const {
        return _delta;
      }

      Orientation getOrientation() const {
        return _orient;
      }

      static EventType Type;

    private:
      int _delta;
      Orientation _orient;
      //Qt::Orientation orient = Qt::Vertical
  };

}

#endif /* WHEELEVENT_H_ */
